package com.zh.auth.service;

import com.zh.auth.domain.dto.AddRoleDto;
import com.zh.auth.domain.dto.PageRoleDto;
import com.zh.auth.domain.dto.UpdateRoleDto;
import com.zh.web.base.PageApiResult;
import com.zh.web.domain.auth.vo.RoleVo;

import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutionException;

public interface RoleService {

    /**
     * 新增角色
     *
     * @param addRoleDto addRoleDto
     * @return String
     */
    String addRole(AddRoleDto addRoleDto);

    /**
     * 更新角色信息
     *
     * @param updateRoleDto updateRoleDto
     * @return String
     */
    String updateRole(UpdateRoleDto updateRoleDto);

    /**
     * 分页查询角色列表
     *
     * @param pageRoleDto pageRoleDto
     * @return PageApiResult
     */
    PageApiResult<RoleVo> pageRole(PageRoleDto pageRoleDto);

    /**
     * 删除角色
     *
     * @param ids ids
     * @return String
     */
    String deleteRole(List<Long> ids);

    /**
     * 根据code获取角色
     *
     * @param code code
     * @return RoleVo
     */
    RoleVo getByCode(Integer code);

    /**
     * 根据用户ID查询角色集合
     *
     * @param id 用户ID
     * @return 角色编码集合
     */
    List<RoleVo> getRoleByUserId(Long id);

    /**
     * 获取全部角色名称code映射表
     * @return
     */
    Map<String, Integer> getRoleName2Code();
    /**
     * 永久删除
     *
     * @param codes codes
     */
    void removeIfMarkedAsDeleted(List<Integer> codes);

}
